<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script>
        /* 
            函数
            -函数也是一个对象
            -函数中可以封装一些功能（代码），在需要时可以执行这些功能（代码）
            -函数中可以保存一些代码在需要的时候调用
            使用typeof检查一个函数对象时，会返回function


        */

        // console.log("我是第一行");
        // console.log("我是第二行");
        // console.log("我是第三行");
        //我们在实际开发中很少使用构造函数来创建一个函数对象
        //创建一个函数对象
        //可以将要封装的代码以字符串的形式传递给构造函数。
        var fun=new Function("console.log('hello,这是我的第一个函数');");
        // console.log(fun);
        //封装到函数中的代码不会立即执行
        //函数中的代码会在函数调用的时候执行
        //调用函数时，函数中封装的代码会按照顺序执行
        fun();
        fun();
        /* 
            使用函数声明来创建一个函数
            语法：
            function 函数名（[形参1，形参2...形参N]）{
                语句....
            }
        */
       function fun2(){
           console.log("这是我的第二个函数~~");
           alert("哈哈哈哈哈")
           document.write("~~~(>-<)~~~");
       }
       // console.log(fun2);
       //调用fun2
       //fun2();
       /* 
        使用函数表达式来创建一个函数
        var 函数名=function([形参1，形参2，形参3]){
            语句....
        }
       */
      var fun3=function(){
          console.log("我是匿名函数中封装的代码");
      }
      fun3();



    </script>
</head>
<body>
    
</body>
</html>